



Program to Iterate over a Stream with Indices in Java 8


Given a Stream in Java, the task is to iterate over it with the help of indices.
Examples:

Input: Stream = [G, e, e, k, s]
Output: [0 -> G, 1 -> e, 2 -> e, 3 -> k, 4 -> s]
Input: Stream = [G, e, e, k, s, F, o, r, G, e, e, k, s]
Output: [0 -> G, 1 -> e, 2 -> e, 3 -> k, 4 -> s, 5 -> F, 6 -> o, 7 -> r, 8 -> G, 9 -> e, 10 -> e, 11 -> k, 12 -> s]


Recommended: Please try your approach on {IDE} first, before moving on to the solution.


Method 1: Using IntStream.

Get the Stream from the array using range() method.
Map each elements of the stream with an index associated with it using mapToObj() method
Print the elements with indices








 


 

 













// Java program to iterate over Stream with Indices 
  
import java.util.stream.IntStream; 
  
class GFG { 
    public static void main(String[] args) 
    { 
  
        String[] array = { "G", "e", "e", "k", "s" }; 
  
        // Iterate over the Stream with indices 
        IntStream 
  
            // Get the Stream from the array 
            .range(0, array.length) 
  
            // Map each elements of the stream 
            // with an index associated with it 
            .mapToObj(index -> String.format("%d -> %s",  
                                       index, array[index])) 
  
            // Print the elements with indices 
            .forEach(System.out::println); 
    } 
} 



















Output:


0 -> G

1 -> e

2 -> e

3 -> k

4 -> s




Method 2: Using AtomicInteger.

Create an AtomicInteger for index.
Get the Stream from the array using Arrays.stream() method.
Map each elements of the stream with an index associated with it using map() method where the index is fetched from the AtomicInteger by auto-incrementing index everytime with the help of getAndIncrement() method.
Print the elements with indices.








 


 

 













// Java program to iterate over Stream with Indices 
  
import java.util.stream.IntStream; 
import java.util.*; 
import java.util.concurrent.atomic.AtomicInteger; 
  
class GFG { 
    public static void main(String[] args) 
    { 
  
        String[] array = { "G", "e", "e", "k", "s" }; 
  
        // Create an AtomicInteger for index 
        AtomicInteger index = new AtomicInteger(); 
  
        // Iterate over the Stream with indices 
        Arrays 
  
            // Get the Stream from the array 
            .stream(array) 
  
            // Map each elements of the stream 
            // with an index associated with it 
            .map(str -> index.getAndIncrement() + " -> " + str) 
  
            // Print the elements with indices 
            .forEach(System.out::println); 
    } 
} 



















Output:


0 -> G

1 -> e

2 -> e

3 -> k

4 -> s










RishabhPrabhuTechnical Content Engineer at GeeksForGeeksIf you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please Improve this article if you find anything incorrect by clicking on  the "Improve Article" button below.







 


 

 
Most popular in Java
 



 

 
Most visited in Java Programs
 


  


 













